﻿#define _CRT_SECURE_NO_WARNINGS 1
//#include<stdio.h>
//void sort(int arr[], int sz)
//{
//	//确定sz 个元素对应的趟数;sz - 1
//	for (int i = 0; i < sz - 1; i++)
//	{
//		//一趟冒泡排序的 执行
//		for (int j = 0; j < sz - 1 - i; j++)
//		{
//			if (arr[j] > arr[j + 1])
//			{
//				//进行交换
//				int tmp = arr[j];
//				arr[j] = arr[j + 1];
//				arr[j + 1] = tmp;
//			}
//		}
//	}
//}
//void print(int arr[], int sz)
//{
//	for (int i = 0; i < sz; i++)
//	{
//		printf("%d ", arr[i]);
//	}
//}
//int main()
//	//冒泡排序核心思想：相邻的两两元素进项比较
//{
//	int arr[] = { 9,8,7,6,5,4,3,2,1,0 };
//	int sz = sizeof(arr) / sizeof(arr[0]);
//	sort(arr, sz);
//	print(arr, sz);
//	return 0;
//}
         /*             代码的优化          */
//#include<stdio.h>
//void sort(int arr[], int sz)
//{
//	//确定sz 个元素对应的趟数;sz - 1
//	for (int i = 0; i < sz - 1; i++)
//	{
//		//一趟冒泡排序的 执行
//		int flag = 1;//假设一趟是有序的
//		for (int j = 0; j < sz - 1 - i; j++)
//		{
//			if (arr[j] > arr[j + 1])
//			{
//				//进行交换
//				int tmp = arr[j];
//				arr[j] = arr[j + 1];
//				arr[j + 1] = tmp;
//				flag = 0;//这一趟是无序的
//			}
//		}
//		if (flag == 1)
//		{
//			break;//无需在进行排序，提高了效率
//		}
//	}
//}
//void print(int arr[], int sz)
//{
//	for (int i = 0; i < sz; i++)
//	{
//		printf("%d ", arr[i]);
//	}
//}
//int main()
////冒泡排序核心思想：相邻的两两元素进项比较
//{
//	/*int arr[] = { 9,8,7,6,5,4,3,2,1,0 };*/
//	int arr1[] = { 0,1,2,3,4,5,6,7,8,9 };//数组本身就已经无需进行排序
//	//int sz = sizeof(arr) / sizeof(arr[0]);
//	int sz1 = sizeof(arr1) / sizeof(arr1[0]);
//
//	//sort(arr, sz);
//	sort(arr1, sz1);
//
//	//print(arr, sz);
//	print(arr1, sz1);
//
//	return 0;
//}
//调整数组使奇数全部都位于偶数前面。输入一个整数数组，实现一个函数，
//#include<stdio.h>
//void is_old_or_even(int arr[], int sz)
//{
//    int* p = arr;
//    //先确定判断次数
//    for (int i = 0; i < sz; i++)
//    {
//        //判断一次之后的操作：原位不动 or 右移？
//        for (int j = 0; j < sz - 1 - i; j++)
//        {
//            //把相邻两元素中的偶数进行后移
//            if (*(p+j) % 2 == 0)
//            {
//                int tmp = *(p+j);
//                *(p + j) = *(p + j + 1);
//                *(p + j + 1) = tmp;
//            }
//            
//        }
//    }
//}
//void print(int arr[], int sz)
//{
//    int* p = arr;
//    for (int i = 0; i < sz; i++)
//    {
//        printf("%d ", *p);
//        p++;
//    }
//}
//int main()
//{
//    int arr[] = { 1,2,3,4,5,6,7,8,9 };
//    int sz = sizeof(arr) / sizeof(arr[0]);
//    is_old_or_even(arr, sz);
//    print(arr, sz);
//    return 0;
//}
#include<stdio.h>
int main1()
{
    char* ch = "abcd";
    printf("*ch = %c\n", *ch);//*ch 解引用，打印地址所对应的内容
    printf("ch  = %s\n", ch);//%s打印字符串，而字符串的存放同数组一样在内存里是连续存放 的

    return 0;
}



#include <stdio.h>
int  main6()
{
    int n = 2;
    n = 5;//n 可以进行 修改
    const int n1 = 2;
    n = 5;//n 不能进行修改，因为有const 修饰
    printf("%d\n", n);

    return 0;
}

#include <stdio.h>
int my_strlen(char* s)//用指针进行接收，s 表示接收的是字符串中第一个字符的地址
{
    char* p = s;
    while (*p != '\0')
        p++;
    return p - s;//指针——指针得到的是元素与元素之间的个数
}
int main9()
{
    printf("%d\n", my_strlen("abc"));//my_strlen（）函数功能是统计字符串个数，把字符串"abc"传给函数
    return 0;
}
#include <stdio.h>
int main10()
{
    int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
    int* p = &arr[0];
    int sz = sizeof(arr) / sizeof(arr[0]);
    while (p < arr + sz) //指针的⼤⼩⽐较
    {
        printf("%d ", *p);//解引用，取内容
        p++;
    }
    return 0;
}


